package com.jlpay.open.jlpay.sdk.java.model.ledger.request;

import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.jlpay.open.jlpay.sdk.java.model.ledger.LedgerBaseRequest;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
 *
 * @author dengwenning
 * @since 2024/8/30
 **/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class MerchRevOpenRequest extends LedgerBaseRequest {

    /**
     * 商户类型
     * 1：资料开户-对公（快捷开户）
     * 2：资料开户-对私（快捷开户）
     * 3：商户号开户
     */
    private String merchType;

    /**
     * 商户号
     * 开户类型为3时，必传，
     * 示例值：849440358120001
     */
    private String mchId;

    /**
     * 营业执照号码
     * 开户类型为1时，必传，注册号/统一社会信用代码，
     * 示例值：91330108MAB555NP6U
     */
    private String licenseNumber;

    /**
     * 营业执照名称
     * 开户类型为1时，必传，营业执照（或登记证书）上的名称，
     * 示例值：深圳市泰思能源有限公司
     */
    private String licenseName;

    /**
     * 注册地址
     * 开户类型为1时，必传，营业执照（或登记证书）上的注册地址，
     * 示例值：深圳市南山区科技南路105号
     */
    private String licenseAddress;

    /**
     * 营业执照起始有效日期
     * 开户类型为1时，必传格式为：yyyy-MM-dd，
     * 示例值：2024-01-01
     */
    private String licenseBeginDate;

    /**
     * 营业执照截止有效日期
     * 开户类型为1时，非长期必传，长期不传格式为：yyyy-MM-dd，
     * 示例值：2024-01-01
     */
    private String licenseEndDate;

    /**
     * 营业执照正面照
     * 开户类型为1时，必传
     */
    private String licenseFrontSourceId;

    /**
     * 法人姓名
     * 开户类型为1、2时，必传
     */
    private String legalName;

    /**
     * 法人身份证号码
     * 开户类型为1、2时，必传
     */
    private String legalNumber;

    /**
     * 身份证起始有效日期
     * 开户类型为1、2时，必传格式为：yyyy-MM-dd，
     * 示例值：2024-01-01
     */
    private String legalBeginDate;

    /**
     * 身份证截止有效日期
     * 开户类型为1、2时，非长期必，长期不传格式为：yyyy-MM-dd，
     * 示例值：2024-01-01
     */
    private String legalEndDate;

    /**
     * 身份证正面照
     * 开户类型为1、2时，必传
     */
    private String legalFrontSourceId;

    /**
     * 身份证反面照
     * 开户类型为1、2时，必传
     */
    private String legalBackSourceId;

    /**
     * 手机号
     * 开户类型为1、2时，必传，接收电子签约短信
     */
    private String mobile;

    /**
     * 结算银行卡号
     * 开户类型为1、2时，必传，银行卡号，
     * 示例值：6226****1663
     */
    private String bankCardNo;

    /**
     * 结算账户名
     * 开户类型为1、2时，必传，银行卡户名，
     * 示例值：张三
     */
    private String bankCardName;

    /**
     * 收款账户总行银行代码
     * 开户银行总行编号，非必填，可通过银行总行信息接口查询，
     * 示例值：308
     */
    private String bankCode;

    /**
     * 收款账户总行银行名
     * 开户总行名称，非必填，可通过银行总行信息接口查询，
     * 示例值：中国建设银行股份有限公司
     */
    private String bankName;

    /**
     * 收款账户分支行联行号
     * 开户分支行联行号（对公结算卡必填），可通过基础信息-分支行信息接口查询，
     * 示例值：105584000370
     */
    private String bankBranchCode;

    /**
     * 收款账户分支行名称
     * 开户分支行名称，非必填，可通过基础信息-分支行信息接口查询，
     * 示例值：中国建设银行股份有限公司深圳罗湖支行
     */
    private String bankBranchName;

    /**
     * 银行卡正面照片
     * 开户类型为1、2时，必传，银行卡正面照片的sourceId
     */
    private String bankFrontSourceId;

    @Override
    public String path() {
        return "/open/ledger/merch/rev/open";
    }

}
